package cqrtplm.util;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import cqrtplm.entity.ZdDbWithFormoid;

public class FormDataGenerator {
    /**
     * 从ZdDbWithFormoid实体类生成表单提交JSON字符串
     * @param dto 实体类（DTO）
     * @return 表单JSON字符串
     */
    public static String generateFormData(ZdDbWithFormoid dto) {
        // 1. 构建主表单JSON对象
        JSONObject mainForm = new JSONObject();

        // 2. 填充主表单固定字段（非子表单部分）
        mainForm.put("radio67692", dto.getFactory());  // 空字段
        mainForm.put("radio99177", dto.getOrderdeal());   // 空字段
        mainForm.put("input87825", dto.getAppointreasontext()); // 指定原因
        mainForm.put("input49647", "");       // 内容
        mainForm.put("input49564", ""); // 指定详情
        mainForm.put("textarea11936",dto.getOrderlist()); //
        mainForm.put("addFileList", new JSONArray()); // 无附件

        // 3. 构建子表单（subform67098）数组（支持多条数据，这里以单条为例）
        JSONArray subformArray = new JSONArray();
        JSONObject subformItem = new JSONObject();

        // 4. 填充子表单字段（从DTO中提取数据）
        subformItem.put("_rowId_", "id" + System.currentTimeMillis()); // 动态生成行ID
        subformItem.put("input17817", dto.getChangeType());           // 需求类型：新增/修改
        subformItem.put("input75631", dto.getCustomerName());         // 客户名称
        subformItem.put("input94778", dto.getCustomerCode());         // 客户编码
        subformItem.put("input80138", dto.getDevCode());              // 开发令
        subformItem.put("input11655", dto.getProductType());          // 机型
        subformItem.put("input66947", dto.getMaterialCode());         // 物料编码
        subformItem.put("input20325", dto.getPartName());             // 物料名称
        subformItem.put("input80487", dto.getSupplierName());         // 供应商名称
        subformItem.put("input7629", dto.getSupplierCode());          // 供应商编码（可为空）
        subformItem.put("input21986", dto.getOrderNo());              // 订单号
        subformItem.put("input68758", dto.getAppointType());          // 指定类型：长期/临时
        subformItem.put("input111716", dto.getEndTime());             // 结束日期
        subformItem.put("input112797", dto.getOrderItemNo());         // 项次号
        subformItem.put("input94969", dto.getPartsCode());            // 成品码
        subformItem.put("input40813", dto.getStatus());                         // 状态（固定值）

        // 5. 将子表单项添加到数组
        subformArray.add(subformItem);
        mainForm.put("subform67098", subformArray);

        // 6. 转换为JSON字符串并返回
        return mainForm.toJSONString();
    }


}